%d
In this section, we summarize our findings on scientific visualization
resulting from this project.

\paragraph{Different phenomena call for different visualizations} 
As already pointed out in the introduction: one of the purposes of
visualization is to provide insight in phenomena occuring in the datasets. What
phenomena are highlighted depends on the specific visualization technique. For
example, in figure~\ref{fig:circular} the use of an angular colormap highlights special
regions in the vector field, like vortices, saddle nodes, wells and pits. In
another example, figure~\ref{sub:streamgradient} highlights at what point
matter is collected and where it is dispersed. The optimal choice of the specific
visualization technique used, including the colormap settings and the grid
sampling, is highly dependent on the phenomenon of interest.

\paragraph{Communication} Visualization can yield aesthetically
appealing images as we have seen during the completion of this assingment, examples can be found throughout this report. In this way, it allows communicating about phenomena in the datasets even when the audience lacks theoretical knowledge on the underlying process. More generally, the \textit{insight} noted in the previous paragraph is not necessarily a
formal representation of the processes underlying the phenomena but more an idea of
the general tendencies of these phenomena. Conveying these general tendencies can be done efficiently using visualizations.

\paragraph{Separation of data representation and drawing} In the data
visualization pipeline the rendering step is separated from the steps involving
data representation. While the set-up of our program for the most part adhered
to this division, some parts performed data enrichment and rendering
simultaneously. For instance, the \texttt{Streamlines} class computes the
endpoints of its segments directly prior to rendering them. For our
\texttt{StreamSurface} class this turned out to be a problem, since computing
vertex normals of the quads defined by the streamline segment was a very
involved procedure in this way. This is a testament to the advantages of using a
modular program structure.

\paragraph{Software design} When a visualization application offers all kinds of functions, presenting this functionality to the user is vital. It can become cumbersome to manually add new GUI elements whenever new functionality becomes available. We tried to solve this problem by having the GUI check itself what functions visualizers offer. This resulted in a fairly simple procedure of adding functionality. However, the amount of options generated by this process might be daunting to an unintiated user.
